<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Wedstrijd extends MY_Controller {
    
    var $seizoen;
    var $ploeg;

	function __construct(){
            parent::__construct();
            $this->load->library('WedstrijdClass');
            $this->load->library('WedstrijdGebeurtenisClass');
            $this->load->library('SpelerClass');
            $this->load->library('SpeeldagClass');
            $this->load->model('wedstrijdmodel');
            $this->load->model('seizoenmodel');
            $this->load->model('ploegmodel');
            $this->load->model('spelermodel');
            $seizoenen = $this->seizoenmodel->SelectActive();
            if(!isset($seizoenen)){
                $this->SetMessage("U moet eerst een actief seizoen opgeven");
                redirect(base_url().'seizoen');
            }
            $seizoenen = $seizoenen[0];
            $this->seizoen = $seizoenen;  
            $ploegen = $this->ploegmodel->SelectHome($this->seizoen->Id);
            if(!isset($ploegen)){
                $this->SetMessage("U moet eerst een thuisploeg aanmaken opgeven");
                redirect(base_url().'ploeg');
            }
            if($ploegen != null) {
                $ploegen = $ploegen[0];
                $this->ploeg = $ploegen;
            }
        }
	
	
	public function index()
	{
        if($this->IsAdmin()) {
            $unregistered = $this->ploegmodel->SelectNotInSeizoen($this->seizoen->Id);
            $ploegen = $this->ploegmodel->SelectBySeizoen($this->seizoen->Id);
        if(false !== $this->GetUpdate()){
            $data['update'] = $this->GetUpdate();
        }
            $data['ploegen'] = $ploegen;
            $data['unregistered'] = $unregistered;
            $this->LoadView('admin/mod_team_list', $data);
        } else { 
            redirect(base_url()); 
        }
	}
    
    public function admin_index(){
        
        $views = array();
        $speeldagen = $this->wedstrijdmodel->SelectSpeeldagBySeizoen($this->seizoen->Id);
        //die(print_r($speeldagen));
        usort($speeldagen,function($a,$b){
            return date_create($a->Datum) > date_create($b->Datum);
            
        });
        
        $data['ploegen'] = $this->ploegmodel->SelectBySeizoen($this->seizoen->Id);
        foreach($speeldagen as $speeldag){
            $data['speeldag'] = $speeldag;
            $wedstrijden = $this->wedstrijdmodel->SelectWedstrijdBySpeeldag($speeldag->Id);
            if(isset($wedstrijden)){
                usort($wedstrijden,function($a,$b){
                    $uura = str_replace(":","", $a->Uur);
                    $uurb = str_replace(":","", $b->Uur);
                    return $uura - $uurb;
                });
            }
            $data['wedstrijden'] = $wedstrijden;
            $views[] = array('admin/wedstrijd_list',$data);
            $views[] = array('admin/wedstrijd_insert',$data);
            
        }
        $views[] = array('admin/speeldag_insert',$data);
        
        
        $this->LoadView($views,null);
        
        
            
            
        
        
    }
    
    public function admin_detail($id){
        $wedstrijd = $this->wedstrijdmodel->SelectWedstrijdById($id);
        $data['wedstrijd'] = $wedstrijd[0];
        $data['spelers'] = $this->wedstrijdmodel->SelectSpelerNotInWedstrijd($id,$this->seizoen->Id);
        //die(print_r($data['wedstrijd']));
        $data['thuis'] = $this->ploeg->Inschrijving;
        $this->LoadView('admin/wedstrijd_detail', $data);
    }
	public function insert()
	{
            $type = $this->input->post('type');
            if($this->VerifyString($type) == false){
                $this->SetMessage("Type niet meegegeven in invoer-commando");
                $this->GoBack();
            }
            switch($type){
                case "wedstrijd":
                    $thuis = $this->input->post('thuis');
                    $bezoeker = $this->input->post('bezoeker');
                    $speeldag = $this->input->post('speeldag');
                    $uur = $this->input->post('uur');
                    if($this->VerifyNumber(array($thuis,$bezoeker,$speeldag)) == false or preg_match('/([0-1]?[0-9]|2[0-3]):[0-5][0-9]/',$uur) == 0){
                        $this->Error('invoerfout');
            
                    }
                    if($thuis == $bezoeker){
                        $this->Error("De ploegen in een wedstrijd moeten verschillend zijn");
                    }
                    
                    $id = $this->wedstrijdmodel->InsertWedstrijd($thuis,$bezoeker,$speeldag,$uur);
                    $this->SetMessage("Wedstrijd aangemaakt, <a href=".base_url()."/wedstrijd/detail/".$id.">open</a>");
                    $this->GoBack();
                    break;
                case "speeldag":
                    $naam = $this->input->post('naam');
                    $datum = $this->input->post('datum');
                    //die($datum);
                    if($this->VerifyString($naam) == false or $this->VerifyDate($datum) == false){
                        $this->Error('invoerfout');
                   
                    }
                    $datum = date("Y-m-d",  strtotime($datum));
                    //die($datum);
                    if($datum > $this->seizoen->Start and $datum < $this->seizoen->Eind){
                        $id = $this->wedstrijdmodel->InsertSpeeldag($naam,$datum,$this->seizoen->Id);
                        $this->SetMessage("Speeldag aangemaakt");
                        $this->GoBack($id);
                    }
                    else{
                        $this->Error('De speeldag datum moet binnen het seizoen vallen');
                    }
                    break;
                default:
                    $this->Error("Invoerfout");
            
            }
            
       
	}
	
	public function delete()
	{
            $id = $this->input->post('id');
            if($this->VerifyNumber($id) and ($this->IsAdmin())){
		//$this->load->model('SeizoenModel');
		

		$this->ploegmodel->Delete($id);
                unlink('./images/teams/'.$id.'image');
            }
		redirect(base_url() . 'ploeg');

	}
        
        public function register(){
            $ploeg = $this->input->post('id');
            
            if($this->VerifyNumber($ploeg) and $this->IsAdmin()){
                
                 if($ploeg == false or $ploeg == ''){
                    $this->SetMessage("Invoer probleem. Actie geannulleerd.");
                    redirect(base_url() . 'ploeg');
                }
                $this->seizoenmodel->RegisterPloeg($ploeg,$this->seizoen->Id);
            }
            redirect(base_url() . 'ploeg');
            
        }
        
        public function unregister(){
            $id = $this->input->post('id');
            
            if($this->VerifyNumber($id) and $this->IsAdmin()){   
                
                $this->seizoenmodel->UnregisterPloeg($id);
            }
            else {
                $this->SetMessage("Invoer probleem. Actie geannuleerd."); 
            }
           
        }
	
	public function update()
	{
            if($this->IsAdmin()){
                //die(print_r($_POST));
                $id = $this->input->post('id');
		        $naam = $this->input->post('naam');
		        $straat = $this->input->post('straat');
		        $nummer = $this->input->post('nummer');
		        $postcode = $this->input->post('postcode');
		        $plaats = $this->input->post('plaats');
                $stringdata = array($naam,$straat,$plaats);
                $numberdata = array($id,$nummer,$postcode);
                if(!$this->VerifyNumber($numberdata) and !$this->VerifyString($stringdata)){
                    $this->SetMessage("Invoer probleem. Actie geannulleerd.");
                    redirect(base_url() . 'ploeg');
                }
                
		$land = 'Belgium';
		$locatie = $straat . ' ' . $nummer . ',' . $postcode . ' ' . $plaats . ',' . $land;
		
                if($this->input->post('thuis') === 'thuis'){
                    $thuis = 1;
                } else {
                    $thuis = 0;
                }
		
		
		$this->ploegmodel->Update($id,$naam,$locatie,$thuis);
               // die(print_r($_FILES));
                 If(isset($_FILES["file"]) and $_FILES["file"]["error"] === 0){
                     unlink('./images/teams/'.$id.'image');
                    $allowedExts = array("gif", "jpeg", "jpg", "png");
                    $temp = explode(".", $_FILES["file"]["name"]);
                    $extension = end($temp);
                    move_uploaded_file($_FILES["file"]["tmp_name"], "./images/teams/$id.image");
        }
            }

		redirect(base_url() . 'ploeg');
	}
	public function get_team_by_id() {
        $id_ploeg = $this->input->post("id_ploeg");
        $ploeg = $this->ploegmodel->SelectById($id_ploeg);
        $arr_ploeg = (array)$ploeg[0];
        print json_encode($arr_ploeg);
    }
}